<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
    </ul>
    <script>
        // 数组的扩展运算符
        function fn(a,b,c){
            console.log(a,b,c);
        }
        let arr = [5,6,7];
        fn(...arr);

        // let a,b,c = ...arr
        let arr1 = [8,9,10];
        console.log(arr1);//[8,9,10]
        console.log(...arr1);//8,9,10



        //  我们可以使用 扩展运算符 代替以前  Function.prototype.apply()的用法
        console.log(Math.max(1,2,4,6,7,22));//22

        let arr2 = [3,7,9,19,720];
        console.log(Math.max.apply(Math,arr2));//Math就相当于一个实例
        console.log(Math.max(...arr2));//


        // 复制数组的作用  数组拷贝 浅拷贝
        let arr3 = [12,121,23,12]

        let arr4 = [...arr3]

        console.log(arr3);
        console.log(arr4);
        console.log(arr3 === arr4)   // false


        let arr5 = ['a', 'b', ...arr3];
        console.log(arr5);

        // 数组的合并
        function fn3(){
            console.log(arguments);
            console.log([].slice.call(arguments));
            console.log(Array.prototype.slice.call(arguments));

            console.log([...arguments]);
        }

        fn3(3,4,5);


        // 扩展运算符 起作用的前提是 三点后面跟着的是 【可迭代对象】 (数组、一些伪数组（arguments、nodeList）、字符串、新增的数据类型Map、Set)
        // let num = 10
        // let arr7 = [...num]   //Uncaught TypeError: num is not iterable

        let lis = document.querySelectorAll("li");
        console.log(lis);//伪数组

        // filter() 方法创建一个新的数组，新数组中的元素是通过检查指定数组中符合条件的所有元素。
        let result = ([...lis]).filter(li => li.innerHTML>3);
        
        // var a = function(li){
        //     li.innerHTML>3
        // }

        console.log(result);

        // 字符串也可以使用扩展运算符 转换成数组
        let str = "hello world!";
        console.log(str.split(""));
        console.log([...str]);
        console.log(str.__proto__);
    </script>
</body>
</html>